package com.library.books.domain;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.library.common.annotation.Excel;
import lombok.experimental.Accessors;

/**
 * 书籍借阅逾期滞纳金记录对象 borrow_fine_record
 *
 * @author hb
 * @date 2024-11-20
 */
@ApiModel("书籍借阅逾期滞纳金记录对象")
@Accessors(chain = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class BorrowFineRecord implements Serializable {
    private static final long serialVersionUID = 1L;

    @ApiModelProperty("id")
    @TableId(type = IdType.AUTO)
    private Long borrowFineId;


    /** 借阅记录id */
    @ApiModelProperty("借阅记录id")
    private Long borrowRecordId;

    /** 借阅id */
    @ApiModelProperty("借阅id")
    private Long borrowId;

    /** 借阅人卡号 */
    @ApiModelProperty("借阅人卡号")
    @Excel(name = "借阅人卡号")
    private String borrowCard;

    /** 借阅状态(1、默认为逾期 ) */
    @ApiModelProperty("借阅状态(1、默认为逾期 )")
    @Excel(name = "借阅状态(1、默认为逾期 )")
    private String borrowStatus;

    /** 记录操作类型 */
    @ApiModelProperty("记录操作类型")
    @Excel(name = "记录类型" , dictType = "borrow_record_type")
    private String borrowRecordType;

    /** 书籍isbn */
    @ApiModelProperty("书籍isbn")
    @Excel(name = "书籍isbn")
    private String booksIsbn;

    /** 书籍名 */
    @ApiModelProperty("书籍名")
    @Excel(name = "书籍名")
    private String booksName;

    /** 书籍封面图片 */
    @ApiModelProperty("封面图片")
    @Excel(name = "封面图片")
    private String booksCoverPhoto;

    /** 副本id */
    @ApiModelProperty("副本id")
    private Long booksCopyId;

    /** 副本索书号 */
    @ApiModelProperty("小类索书号")
    @Excel(name = "小类索书号")
    private String booksCopyLicense;

    /** 书架 */
    @ApiModelProperty("书架")
    @Excel(name = "书架")
    private Long bookShelfId;

    /** 书架名 */
    @ApiModelProperty("书架名")
    @Excel(name = "书架名")
    private String bookShelfName;

    /** 借阅人 */
    @ApiModelProperty("借阅人")
    @Excel(name = "借阅人")
    private String studentName;

    /** 借阅人学号 */
    @ApiModelProperty("借阅人学号")
    @Excel(name = "借阅人学号")
    private String studentNumber;

    /** 记录时的借阅时间 */
    @ApiModelProperty("记录时的借阅时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "记录时的借阅时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date borrowFineLendTime;

    /** 记录时的借阅天数 */
    @ApiModelProperty("记录时的借阅天数")
    @Excel(name = "记录时的借阅天数")
    private Integer borrowFineLendDays;

    /** 记录时的续借时间 */
    @ApiModelProperty("记录时的续借时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "记录时的续借时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date borrowFineRenewTime;

    /** 记录时的续借天数 */
    @ApiModelProperty("记录时的续借天数")
    @Excel(name = "记录时的续借天数")
    private Integer borrowFineRenewDays;

    /** 记录时的借阅应该归还时间 */
    @ApiModelProperty("应该归还时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "记录时的借阅时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date borrowFineShouldReturnTime;

    /** 记录时的滞纳金额 */
    @ApiModelProperty("记录时的滞纳金额")
    @Excel(name = "记录时的滞纳金额")
    private BigDecimal borrowFineAmount;

    /** 记录时的逾期天数 */
    @ApiModelProperty("记录时的逾期天数")
    @Excel(name = "记录时的逾期天数")
    private Long borrowFineOverdueDays;

    /** 创建人id */
    @ApiModelProperty("创建人id")
    @TableField(fill = FieldFill.INSERT)
    private Long createId;

    /** 创建者 */
    @ApiModelProperty("创建者")
    @Excel(name = "创建者")
    @TableField(fill = FieldFill.INSERT)
    private String createBy;

    /** 创建时间 */
    @ApiModelProperty("创建时间")
    @Excel(name = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    /** 前端查询条件 */
    @TableField(exist = false)
    private Date createStartTime;
    @TableField(exist = false)
    private Date createEndTime;

    /** 操作平台 */
    @ApiModelProperty("操作平台")
    @Excel(name = "操作平台")
    private String operateTerrace;

    /** 操作卡号（管理员或者普通学生） */
    @ApiModelProperty("操作卡号")
    @Excel(name = "操作卡号")
    private String operateCard;
}
